<?php
//------------------------------------------------------------ Contraintes d'accès de la page

	// on vérifie que cette page est appelée à partir de l'index et que l'utilisateur a le droit de modification de son profil
	if(isset($_SESSION) && ($GLOBALS['USER']['level'] >= 1 || $GLOBALS['USER']['admin'])){
	
?>
<?php
//------------------------------------------------------------ Valeur des champs avant saisie

	$dv_login = $GLOBALS['USER']['login']; // valeur du champ login (mod_login)
	$dv_password = ""; // valeur du champ mot de passe (mod_password)
	$dv_confirm = ""; // valeur du champ de confirmation (mod_confirm)
	$dv_nom = $GLOBALS['USER']['nom']; // valeur du champ nom (mod_nom)
	$dv_prenom = $GLOBALS['USER']['prenom']; // valeur du champ prenom (mod_prenom)
	$dv_email = $GLOBALS['USER']['email']; // valeur du champ e-mail (mod_email)
	// valeur du champ adesse (mod_adresse)
	if(is_null($GLOBALS['USER']['adresse'])){
		$dv_adresse = "N°, Voie";
	}else{
		$dv_adresse = $GLOBALS['USER']['adresse'];
	}
	// valeur du champ code postal (mod_cp)
	if(is_null($GLOBALS['USER']['cp'])){
		$dv_cp = "CP";
	}else{
		$dv_cp = $GLOBALS['USER']['cp'];
	}
	// valeur du champ ville (mod_ville)
	if(is_null($GLOBALS['USER']['ville'])){
		$dv_ville = "Ville";
	}else{
		$dv_ville = $GLOBALS['USER']['ville'];
	}
	// valeur du champ pays (mod_pays)
	if(is_null($GLOBALS['USER']['pays'])){
		$dv_pays = "Pays";
	}else{
		$dv_pays = $GLOBALS['USER']['pays'];
	}
	$dv_telperso = $GLOBALS['USER']['telPerso']; // valeur du champ teléphone personnel (mod_telperso)
	$dv_telbureau = $GLOBALS['USER']['telBureau']; // valeur du champ téléphone bureau (mod_telbureau)
	$dv_structure = $GLOBALS['USER']['idStructure']; // valeur du champ travail pour (mod_structure)
	
	$idPersonne = $GLOBALS['USER']['idPersonne'];
	
	// Valeurs possible du champ mod_structure
	$query_recuperation_structures = "SELECT CODESTRUCTURE AS id, NOMSTRUCTURE AS nom FROM structure ORDER BY nom";
	
	$result_recuperation_structures =  mysql_query($query_recuperation_structures, $connexion) or logError("RECUPERATION STRUCTURES-".$query_recuperation_structures."-".mysql_error());

	$selectStructures = array(); // on créé un tableau qui contient la liste des structures ainsi que les informations de chacunes
	$nb_structures = 0;
	while($tab_recuperation_structures = mysql_fetch_assoc($result_recuperation_structures)){
		$selectStructures[$nb_structures] = $tab_recuperation_structures;
		$nb_structures++;
	}
	
	mysql_free_result($result_recuperation_structures);
	
?>
<?php
//------------------------------------------------------------ Traitements si le formulaire a été envoyé

/********************************* Règles :

	- nom et prénom ne peuvent pas être vide
	- email et téléphones doivent avoir un format valide
	- si le mot de passe est indiqué, la confirmation doit être identique

*****************************************/

	$statut = array(); // indique le statut du traitement du formulaire (echec ou succes) - tableau contenant les messages à afficher
	$erreur = false; // indique si une erreur a été rencontrée lors du traitement

	trimTabByKey($_POST, "mod_"); // appel à la fonction trimTabByKey() définie dans fonctions.php
	
	//---------------------------------- Contrôle des données ----------------------------------
	
	if(isset($_POST['form_sent'])){ // si le formulaire est envoyé
		
      // Contrôle des données du login
		if(isset($_POST['mod_login']) && is_string($_POST['mod_login'])){
			if(emptyString($_POST['mod_login'])){
				$statut[] = "Le login ne peut être effacé";
				$erreur = true;
			}else{
				if(isNameFormat($_POST['mod_login'])){
					$dv_login = $_POST['mod_login'];
				}else{
					$statut[] = "Format du login incorrect";
					$erreur = true;
				}
			}
		}else{
			$statut[] = "Aucun login indiqué";
			$erreur = true;
		}
      
		// Contrôle des données du mot de passe et de la confirmation
		if(isset($_POST['mod_password']) && is_string($_POST['mod_password'])){
			if(!emptyString($_POST['mod_password'])){
				if(isset($_POST['mod_confirm']) && is_string($_POST['mod_confirm'])){
					if(!emptyString($_POST['mod_confirm'])){
						if($_POST['mod_confirm'] != $_POST['mod_password']){
							$statut[] = "Confirmation différente du mot de passe";
							$erreur = true;
						}
					}else{
						$statut[] = "Aucune confirmation du mot de passe";
						$erreur = true;
					}
				}else{
					$statut[] = "Aucune confirmation de mot de passe indiqué";
					$erreur = true;
				}
			}
		}else{
			$statut[] = "Aucun mot de passe indiqué";
			$erreur = true;
		}
		
		// Contrôle des données du nom
		if(isset($_POST['mod_nom']) && is_string($_POST['mod_nom'])){
			if(emptyString($_POST['mod_nom'])){
				$statut[] = "Le nom ne peut être effacé";
				$erreur = true;
			}else{
				if(isNameFormat($_POST['mod_nom'])){
					$dv_nom = $_POST['mod_nom'];
				}else{
					$statut[] = "Format du nom incorrect";
					$erreur = true;
				}
			}
		}else{
			$statut[] = "Aucun nom indiqué";
			$erreur = true;
		}
		
		// Contrôle des données du prénom
		if(isset($_POST['mod_prenom']) && is_string($_POST['mod_prenom'])){
			if(emptyString($_POST['mod_prenom'])){
				$statut[] = "Le prénom ne peut être effacé";
				$erreur = true;
			}else{
				if(isNameFormat($_POST['mod_prenom'])){
					$dv_prenom = $_POST['mod_prenom'];
				}else{
					$statut[] = "Format du prénom incorrect";
					$erreur = true;
				}
			}
		}else{
			$statut[] = "Aucun prénom indiqué";
			$erreur = true;
		}
		
		// Contrôle des données de l'adresse e-mail
		if(isset($_POST['mod_email']) && is_string($_POST['mod_email'])){
			if(!emptyString($_POST['mod_email'])){
				if(!isEmailFormat($_POST['mod_email'])){
					$statut[] = "Format de l'adresse e-mail incorrect";
					$erreur = true;
				}else{
					$dv_email = $_POST['mod_email'];
				}
			}
		}else{
			$statut[] = "Aucune adresse e-mail indiquée";
			$erreur = true;
		}
		
		// Contrôle des données de l'adresse de résidence
		if(isset($_POST['mod_adresse']) && is_string($_POST['mod_adresse'])){
			if($_POST['mod_adresse'] == "N°, Voie" || emptyString($_POST['mod_adresse'])){ // Si le champs à la valeur par défaut, on le traite comme si il était vide
				$_POST['mod_adresse'] = "";
				$dv_adresse = "N°, Voie";
			}else{
				$dv_adresse = $_POST['mod_adresse'];
			}
		}else{
			$statut[] = "Aucune adresse de domicile indiquée";
			$erreur = true;
		}
		
		// Contrôle des données du pays, du code postal  et de la ville de résidence
		$communeIndiquee = false; // variable indiquant si l'utilisateur a saisi sa commune de résidence
		if(isset($_POST['mod_cp']) && is_string($_POST['mod_cp']) && isset($_POST['mod_ville']) && is_string($_POST['mod_ville']) && isset($_POST['mod_pays']) && is_string($_POST['mod_pays'])){
			if($_POST['mod_cp'] == "CP" || emptyString($_POST['mod_cp'])){ // Si le champs à la valeur par défaut, on le traite comme si il était vide
				$_POST['mod_cp'] = "";
				$dv_cp = "CP";
			}
			if($_POST['mod_ville'] == "Ville" || emptyString($_POST['mod_ville'])){ // Si le champs à la valeur par défaut, on le traite comme si il était vide
				$_POST['mod_ville'] = "";
				$dv_ville = "Ville";
			}
			if($_POST['mod_pays'] == "Pays" || emptyString($_POST['mod_pays'])){ // Si le champs à la valeur par défaut, on le traite comme si il était vide
				$_POST['mod_pays'] = "";
				$dv_pays = "Pays";
			}
			if(!emptyString($_POST['mod_ville']) && !emptyString($_POST['mod_cp']) && !emptyString($_POST['mod_pays'])){ // Code postal, Ville et Pays sont indiqués
				$communeIndiquee = true;
				if(!isPostalFormat($_POST['mod_cp'])){
					$statut[] = "Format du code postal incorrect";
					$erreur = true;
				}else{
					$dv_cp = $_POST['mod_cp'];
				}
				if(!isNameFormat($_POST['mod_ville'])){
					$statut[] = "Format de la ville incorrect";
					$erreur = true;
				}else{
					$dv_ville = $_POST['mod_ville'];
				}
				if(!isNameFormat($_POST['mod_pays'])){
					$statut[] = "Format du pays de résidence incorrect";
					$erreur = true;
				}else{
					$dv_pays = $_POST['mod_pays'];
				}
			}else if(!emptyString($_POST['mod_ville']) || !emptyString($_POST['mod_cp']) || !emptyString($_POST['mod_pays'])){ // Parmus Code postal, Ville et Pays, au moins un n'est pas vide
				$statut[] = "La ville, son code postal et le pays doivent être indiqués";
				$erreur = true;
			}
		}else{
			$statut[] = "Aucune ville et pays de résidence indiqués";
			$erreur = true;
		}
		
		// Contrôle des données du numéro de téléphone personnel
		if(isset($_POST['mod_telperso']) && is_string($_POST['mod_telperso'])){
			if(!emptyString($_POST['mod_telperso'])){
				if(!isPhoneFormat($_POST['mod_telperso'])){
					$statut[] = "Format du numéro de téléphone personnel incorrect";
					$erreur = true;
				}else{
					$dv_telperso = $_POST['mod_telperso'];
				}
			}else{
				$dv_telperso = $_POST['mod_telperso'];
			}
		}else{
			$statut[] = "Aucun numéro de téléphone personnel indiqué";
			$erreur = true;
		}
		
		// Contrôle des données du numéro de téléphone personnel
		if(isset($_POST['mod_telbureau']) && is_string($_POST['mod_telbureau'])){
			if(!emptyString($_POST['mod_telbureau'])){
				if(!isPhoneFormat($_POST['mod_telbureau'])){
					$statut[] = "Format du numéro de téléphone de bureau incorrect";
					$erreur = true;
				}else{
					$dv_telbureau = $_POST['mod_telbureau'];
				}
			}else{
				$dv_telbureau = $_POST['mod_telbureau'];
			}
		}else{
			$statut[] = "Aucun numéro de téléphone de bureau indiqué";
			$erreur = true;
		}
		
		// Contrôle des données de la structure où travaille la personne
		if(isset($_POST['mod_structure']) && is_string($_POST['mod_structure'])){
			if(!numericInt($_POST['mod_structure']) && $_POST['mod_structure'] != "none"){
				$statut[] = "Format du type de structure incorrect";
				$erreur = true;
			}else{
				if($_POST['mod_structure'] != "none"){
					if(valueExists((int)$_POST['mod_structure'], "CODESTRUCTURE", "structure", $connexion) == 1){
						$dv_structure = $_POST['mod_structure'];
					}else{
						$statut[] = "La structure indiquée n'existe pas ou existe en double";
						$erreur = true;
					}
				}else{
					$dv_structure = null;
				}
			}
		}else{
			$statut[] = "Aucune structure de travail indiquée";
			$erreur = true;
		}
		
		//---------------------------------- Modification du profil ----------------------------------
	
		if(!$erreur){ // aucune erreur n'a été rencontrée jusqu'ici
		
			if($communeIndiquee){ // Si le pays , la ville et son code postal sont indiqués

				// on vérifie si le pays existe déjà
				$query_recuperation_pays_existe = "SELECT CODEPAYS FROM pays WHERE NOMPAYS = ".mysqlString($_POST['mod_pays']);
				$result_recuperation_pays_existe = mysql_query($query_recuperation_pays_existe, $connexion) or logError("RECUPERATION PAYS EXISTE-".$query_recuperation_pays_existe."-".mysql_error());
				if(mysql_num_rows($result_recuperation_pays_existe) > 0){ // le pays existe
					$tab_recuperation_pays_existe = mysql_fetch_row($result_recuperation_pays_existe);
					$idPays = $tab_recuperation_pays_existe[0];
				}else{ // le pays n'existe pas
					// On créé le nouveau pays
					$query_creation_pays = "INSERT INTO pays(NOMPAYS) VALUES(".mysqlString($_POST['mod_pays']).")";
					$result_creation_pays = mysql_query($query_creation_pays, $connexion) or logError("CREATION PAYS-".$query_creation_pays."-".mysql_error());
					
					if($result_creation_pays === true){
						$idPays = valueMax("CODEPAYS", "pays", $connexion);
					}else{
						$statut[] = "Erreur critique lors de la modification de votre profil";
						$erreur = true;
					}
				}
				mysql_free_result($result_recuperation_pays_existe);
				
				if(!$erreur){ // aucune erreur n'a été rencontrée jusqu'ici
				
					// on vérifie si la commune existe déjà
					$query_recuperation_commune_existe = "SELECT CODECOMMUNE FROM commune WHERE NOMCOMMUNE = ".mysqlString($_POST['mod_ville'])." AND CODEPOSTAL = ".mysqlString($_POST['mod_cp']);
					$result_recuperation_commune_existe = mysql_query($query_recuperation_commune_existe, $connexion) or logError("RECUPERATION COMMUNE EXISTE-".$query_recuperation_commune_existe."-".mysql_error());
					if(mysql_num_rows($result_recuperation_commune_existe) > 0){ // la commune existe
						$tab_recuperation_commune_existe = mysql_fetch_row($result_recuperation_commune_existe);
						$idCommune = $tab_recuperation_commune_existe[0];
					}else{ // la commune n'existe pas
						// On créé la nouvelle commune
						$query_creation_commune = "INSERT INTO commune(NOMCOMMUNE, CODEPOSTAL, CODEPAYS) VALUES(".mysqlString($_POST['mod_ville']).", ".mysqlString($_POST['mod_cp']).", ".$idPays.")";
						$result_creation_commune = mysql_query($query_creation_commune, $connexion) or logError("CREATION COMMUNE-".$query_creation_commune."-".mysql_error());
						
						if($result_creation_commune === true){
							$idCommune = valueMax("CODECOMMUNE", "commune", $connexion);
						}else{
							$statut[] = "Erreur critique lors de la modification de votre profil";
							$erreur = true;
						}
					}
					mysql_free_result($result_recuperation_commune_existe);
				
				}
				
			}
			
			if(!$erreur){  // aucune erreur n'a été rencontrée jusqu'ici
		
				$query_modification_personne = "UPDATE personne ";
				$query_modification_personne .= "SET NOMPERSONNE = ".mysqlString($_POST['mod_nom'])." , PRENOMPERSONNE = ".mysqlString($_POST['mod_prenom'])." , EMAILPERSONNE = ".mysqlString($_POST['mod_email'])." , ADRESSEPERSONNE = ".mysqlString($_POST['mod_adresse'])." , TELBUREAU = ".mysqlString($_POST['mod_telbureau'])." , TELPORTABLE = ".mysqlString($_POST['mod_telperso'])." ";
				if($communeIndiquee){
					$query_modification_personne .= ", CODECOMMUNE = ".$idCommune." ";
				}else{
					$query_modification_personne .= ", CODECOMMUNE = NULL ";
				}
				if($_POST['mod_structure'] == "none"){
					$query_modification_personne .= ", CODESTRUCTURE = NULL ";
				}else{
					$query_modification_personne .= ", CODESTRUCTURE = ".$_POST['mod_structure']." ";
				}
				$query_modification_personne .= "WHERE CODEPERSONNE = ".$idPersonne." ";
			
				$result_modification_personne = mysql_query($query_modification_personne, $connexion) or logError("MODIFICATION PERSONNE-".$query_modification_personne."-".mysql_error());
			
				$query_modification_utilisateur = "UPDATE infos_utilisateur ";
					$query_modification_utilisateur .= "SET LOGIN = ".mysqlString($_POST['mod_login']);
            if(!emptyString($_POST['mod_password'])){
					$query_modification_utilisateur .= ", MDPCRYPT = '".sha1($_POST['mod_password'])."'";
            }
				$query_modification_utilisateur .= " WHERE CODEINFOSUTILISATEUR = ".$_SESSION['user_id']." ";
					
				$result_modification_utilisateur = mysql_query($query_modification_utilisateur, $connexion) or logError("MODIFICATION UTILISATEUR-".$query_modification_utilisateur."-".mysql_error());

			
				if($result_modification_utilisateur === true && $result_modification_personne === true){
					$statut[] = "Votre profil a été modifié";
				}else{
					$statut[] = "Erreur critique lors de la modification de votre profil";
					$erreur = true;
				}
				
			}
		
		}
		
	}
?>
<?php
//------------------------------------------------------------ Affichage du statut si le formulaire a été envoyé

	if(isset($_POST['form_sent'])){ // si le formulaire est envoyé
	
		if($erreur){
			afficherStatut($statut, 3); // appel à la fonction afficherStatut() définie dans fonctions.php
		}else{
			afficherStatut($statut, 1); // appel à la fonction afficherStatut() définie dans fonctions.php
		}
      redirection("modifierprofil",2);
   
	} else {

?>
<form method="post" action="index.php?p=modifierProfil">
	<table class="formulaire" style="margin-left: auto; margin-right: auto;">
		<tr>
			<th class="titre" colspan="2">Modification de mon profil</th>
		</tr>
		<tr>
			<th class="sous_titre" colspan="2">identifiants de connexion</th>
		</tr>
		<tr>
			<td style="width: 120px" class="etiquette">Login * :</td>
			<td style="width: 275px" class="champ"><input type="text" name="mod_login" size="25" value="<?php echo htmlentities($dv_login, ENT_COMPAT, "UTF-8") ?>" <?php echo (!($GLOBALS['CONFIG']['modifLogin'] && $GLOBALS['USER']['admin'])?" disabled=\"disabled\"":""); ?> /></td>
		</tr>
		<tr>
			<td class="etiquette">Mot de passe :</td>
			<td class="champ"><input type="password" name="mod_password" size="25" value="<?php echo htmlentities($dv_password, ENT_COMPAT, "UTF-8") ?>" /></td>
		</tr>
		<tr>
			<td class="etiquette">Confirmation :</td>
			<td class="champ"><input type="password" name="mod_confirm" size="25" value="<?php echo htmlentities($dv_confirm, ENT_COMPAT, "UTF-8") ?>" /></td>
		</tr>
		<tr>
			<th class="sous_titre" colspan="2">informations personnelles</th>
		</tr>
		<tr>
			<td class="etiquette">Nom * :</td>
			<td class="champ"><input type="text" name="mod_nom" size="25" value="<?php echo htmlentities($dv_nom, ENT_COMPAT, "UTF-8") ?>" /></td>
		</tr>
		<tr>
			<td class="etiquette">Prénom * :</td>
			<td class="champ"><input type="text" name="mod_prenom" size="25" value="<?php echo htmlentities($dv_prenom, ENT_COMPAT, "UTF-8") ?>" /></td>
		</tr>
		<tr>
			<td class="etiquette">E-mail :</td>
			<td class="champ"><input type="text" name="mod_email" size="25" value="<?php echo htmlentities($dv_email, ENT_COMPAT, "UTF-8") ?>" /></td>
		</tr>
		<tr>
			<td class="etiquette">Adresse :</td>
			<td class="champ">
				<input id="mod_adresse" name="mod_adresse" type="text" size="25" value="<?php echo htmlentities($dv_adresse, ENT_COMPAT, "UTF-8") ?>" onfocus="clearField('mod_adresse', 'N°, Voie');" onblur="resetField('mod_adresse', 'N°, Voie');" /><br />
				<input id="mod_cp" name="mod_cp" type="text" size="5" value="<?php echo htmlentities($dv_cp, ENT_COMPAT, "UTF-8") ?>" onfocus="clearField('mod_cp', 'CP');" onblur="resetField('mod_cp', 'CP');" onkeyup="afficherListeCommunes('mod_ville', 'mod_cp', 'mod_pays', 'lst_communes', true);" /> - <input id="mod_ville" name="mod_ville" type="text" size="12" value="<?php echo htmlentities($dv_ville, ENT_COMPAT, "UTF-8") ?>" onfocus="clearField('mod_ville', 'Ville');" onblur="resetField('mod_ville', 'Ville');" onkeyup="afficherListeCommunes('mod_ville', 'mod_cp', 'mod_pays', 'lst_communes', true);" /><br />
				<input id="mod_pays" name="mod_pays" type="text" size="20" value="<?php echo htmlentities($dv_pays, ENT_COMPAT, "UTF-8") ?>" onfocus="clearField('mod_pays', 'Pays');" onblur="resetField('mod_pays', 'Pays');" onkeyup="afficherListeCommunes('mod_ville', 'mod_cp', 'mod_pays', 'lst_communes', true);" />
				<div style="position: relative;">
					<div id="lst_communes" class="infobulle" style="position: absolute; top: 0; left: 0; display: none;">
						<div class="titre"><span id="lst_communes-titre">Villes suggérées :</span><div style="position: absolute; top: 3px; right: 3px; font-size: 12px; font-weight: bold; font-style: normal;">[<a href="#" onclick="document.getElementById('lst_communes').style.display='none'; return false;">X</a>]</div></div>
						<div id="lst_communes-contenu" class="contenu"></div>
					</div>
				</div>
			</td>
		</tr>
		<tr>
			<td class="etiquette">Téléphone :</td>
			<td class="champ">
				<input type="text" name="mod_telperso" size="25" value="<?php echo htmlentities($dv_telperso, ENT_COMPAT, "UTF-8") ?>" /> <label>(Personnel)</label><br />
				<input type="text" name="mod_telbureau" size="25" value="<?php echo htmlentities($dv_telbureau, ENT_COMPAT, "UTF-8") ?>" /> <label>(Bureau)</label><br />
				(uniquement des chiffres, tous attachés)
			</td>
		</tr>
		<tr>
			<th class="sous_titre" colspan="2">relation</th>
		</tr>
		<tr>
			<td class="etiquette">Travail pour :</td>
			<td class="champ">
				<select name="mod_structure">
					<option value="none" <?php if(is_null($dv_structure)) echo "selected=\"selected\""; ?>>aucune structure</option>
					<optgroup label="Structures :">
					<?php
						if($nb_structures > 0){
							foreach($selectStructures as $structure){
								if($structure['id'] == $dv_structure){
									echo "<option value=\"".$structure['id']."\" selected=\"selected\">".htmlentities($structure['nom'], ENT_NOQUOTES, "UTF-8")."</option>";
								}else{
									echo "<option value=\"".$structure['id']."\">".htmlentities($structure['nom'], ENT_NOQUOTES, "UTF-8")."</option>";
								}
							}
							unset($structure);
						}else{
							echo "<option disabled=\"disabled\">Aucune structure enregistrée</option>";
						}
					?>
					</optgroup>
				</select>
			</td>
		</tr>
		<tr>
			<td class="envoi" colspan="2"><input type="submit" value="Modifier" /><input type="hidden" name="form_sent" value="1" /></td>
		</tr>
		<tr>
			<td class="legende" colspan="2">* = champs obligatoires</td>
		</tr>
	</table>
</form>
<div class="information">
	<div class="titre">Information</div>
	<h4>Modification du mot de passe :</h4>
	<p>Si vous souhaitez modifier votre mot de passe, saisissez votre nouveau mot de passe et sa confirmation ; sinon laissez les champs vides.</p>
</div>
<?php
//------------------------------------------------------------ Accès refusé à la page
      }

	}else{
	
		if(isset($_SESSION)){
			include("pages/connexion.php");
		}
	
	}

?>